package architecture;

class MyShort{
	short s;
	MyShort(short _s){
		s=_s;
	}
}
//MyUtil API
public class MyUtil{
	static final int TEST_UNSIGNED=-1;
	static String filename;
	static int boolean2int(boolean input){
		if(input) return 1;
		else return 0;
	}
	static String int2string32(int i){
		String str=Integer.toBinaryString(i);
		if(str.length()==32)
			return str;
		char header[]=new char[32-str.length()];
		for(int j=0;j<header.length;++j){
			header[j]='0';
		}
		str=new String(header)+str;
		return str;
	}
	static int bitsofint(int i,int startbit,int endbit){
		return Integer.parseInt(
				int2string32(i).substring
				(31-startbit,31-endbit+1),2);
	}
	static void transfer(MyInt src, MyInt dst){
		dst.i=src.i;
	}
	static void judgeZero(MyInt src, MyInt dst){
		if(src.i==0) dst.i=1;
		else dst.i=0;
	}
	static void add(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i+src2.i;
	}
	static void sub(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i-src2.i;
	}
	static void mult(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i*src2.i;
	}
	static void div(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i/src2.i;
	}
	static void and(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i&src2.i;
	}
	static void or(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i|src2.i;
	}
	static void xor(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i^src2.i;
	}
	static void sll(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i<<src2.i;
	}
	static void srl(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i>>src2.i;
	}
	static void sra(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i>>>src2.i;
	}
	static void slt(MyInt src1, MyInt src2, MyInt dst){
		dst.i=boolean2int(src1.i<src2.i);
	}
	static void sgt(MyInt src1, MyInt src2, MyInt dst){
		dst.i=boolean2int(src1.i>src2.i);
	}
	static void sle(MyInt src1, MyInt src2, MyInt dst){
		dst.i=boolean2int(src1.i<=src2.i);
	}
	static void sge(MyInt src1, MyInt src2, MyInt dst){
		dst.i=boolean2int(src1.i>=src2.i);
	}
	static void seq(MyInt src1, MyInt src2, MyInt dst){
		dst.i=boolean2int(src1.i==src2.i);
	}
	static void sne(MyInt src1, MyInt src2, MyInt dst){
		dst.i=boolean2int(src1.i!=src2.i);
	}
	//////////////////////////////////
	static void addu(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i+src2.i;
	}
	static void subu(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i+src2.i;
	}
	static void multu(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i+src2.i;
	}
	static void divu(MyInt src1, MyInt src2, MyInt dst){
		dst.i=src1.i+src2.i;
	}
	/////////////////////////////////
}